# 1、用三个集合表示三门学科的选课学生姓名(一个学生可以同时选多门课)
# s_history = {'小明’，"张三",'李四’"王五"，'Lily',"Bob"}
# s_politic ={'小明’"小花”，'小红’"二狗"}
# s_english = {'小明','Lily',"Bob","Davil","李四”}
# 求选课学生总共有多少人
# 求只选了第一个学科的学生数量和学生名字
# 求只选了一门学科的学生数量和学生名字


s_history = {'小明', '张三', '李四', '王五', 'Lily', 'Bob'}
s_politic = {"小明", "小花", "小红", "二狗"}
s_english = {'小明', 'Lily', "Bob", "Davil", "李四"}
# 求选课学生总共有多少人
# 对集合求并集即可
print(f"求选课学生总共有{len(s_history | s_politic | s_english)}人")

# 求只选了第一个学科的学生数量和学生名字
"""
    思路分析
    1.使用差集即可 s_history - s_politic - s_english
"""
print(
    f"只选了第一个学科的学生数量为{len(s_history - s_politic - s_english)} 学生名字 {s_history - s_politic - s_english}")

# 求只选了一门学科的学生数量和学生名字
"""
    思路分析
    1.求出只选择了history的学生
    2.求出只选择了politic的学生
    3.求出只选择了english的学生
    4.然后求并集集合
"""
# 1.求出只选择了history的学生
s1 = s_history - s_politic - s_english
# 2.求出只选择了politic的学生
s2 = s_politic - s_history - s_english
# 3.求出只选择了english的学生
s3 = s_english - s_history - s_politic
# 求并集
print(f"只选了一门学科的学生数量为{len(s1 | s2 | s3)} 学生名字 {s1 | s2 | s3}")

# 求选了三门学科的学生数量和学生名字
# 求交集即可
print(f"选了三门学科的学生数量为{len(s_history & s_politic & s_english)} 学生名字 {s_history & s_politic & s_english}")
